package com.hejing.cloud.resp;

import cn.hutool.core.lang.Chain;
import lombok.Data;
import lombok.experimental.Accessors;

import javax.persistence.Access;
import javax.xml.transform.Result;

/**
 * ClassName: ResultData
 * Package: com.hejing.cloud.resp
 * Description:
 *
 * @Author: HeJing
 * @Create: 2024-08-03 12:05
 * @Version: 1.0
 */
@Data
@Accessors(chain = true)  // 允许链式编程
public class ResultData<T> {

    /**
     * 结果状态，具体状态码参见枚举类 ReturnCodeEnum枚举类
     */
    private String code;
    private String message;
    private T data;
    private long timestamp;

    public ResultData() {
        // 接口调用时间
        this.timestamp = System.currentTimeMillis();
    }

    /**
     * 成功
     * @param data
     * @return
     * @param <T>
     */
    public static <T> ResultData<T> success(T data) {
        ResultData resultData = new ResultData<>();  // 构造的时候已经初始化时间戳

        resultData.setCode(ReturnCodeEnum.RC200.getCode());
        resultData.setMessage(ReturnCodeEnum.RC200.getMessage());
        resultData.setData(data);

        return resultData;
    }

    /**
     * 失败
     * 失败编码和原因 在调用该函数的时候传进来。
     * @param code
     * @param message
     * @return
     * @param <T>
     */
    public static <T> ResultData<T> fail(String code, String message) {
        ResultData resultData = new ResultData<>();  // 构造的时候已经初始化时间戳

        resultData.setCode(code);
        resultData.setMessage(message);
        resultData.setData(null);

        return resultData;
    }
}


























